package com.lonni.rpc.core.socket.codec;

import com.lonni.rpc.core.commom.RpcMsgStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * Netty传输消息头
 * 定义协议相关的头
 * 总字节数  21
 *
 * @author: Lonni
 * @date: 2024/7/8 0008 16:22
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class RpcProtocolHeader implements Serializable {

    /**
     * 魔数 2byte
     */
    private short magic = 1111;
    /**
     * 协议版本号 1byte
     */
    private byte version = 1;
    /**
     * 数据类型 1byte
     *
     * @see com.lonni.rpc.core.commom.RpcMsgType
     */
    private byte msgType;
    /**
     * 状态 1字节
     *
     * @see com.lonni.rpc.core.commom.RpcMsgStatus
     */
    private byte status = (byte) RpcMsgStatus.SUCCESS.ordinal();
    /**
     * 请求ID  4byte
     */
    private long requestId;
    /**
     * 序列化类型  4byte
     * 1 : Kryo
     * 2:Hessian
     * 3:FastJson
     */
    private int serializationType;
    /**
     * 具体数据的长度 4byte
     */
    private int msgLen;
}



